      double precision function mapCemX(c,cmin,cmax)	

      implicit none
      double precision :: c,cx0,cmin,cmax

      double precision :: x0, x

      integer :: iter=100

      integer :: i
      double precision :: tol=1.0d-12

      double precision :: mapXemC
      double precision :: dcdxfc


      x0 =  (  c - (cmax+cmin)/2  )*2.2/(cmax-cmin)  !isso eh uma aproximacao da funcao nao linear de X em C por uma reta

      do i=1,iter
	
	  cx0 =   mapXemC(x0,cmin,cmax)

	  x = x0 - (cx0-c)/dcdxfc(cx0,cmin,cmax)	!< a funcao para encontrar raiz é f(x)-c=0, onde f(x) é mapXemC(x,cmin,cmax)

	  if(sqrt((mapXemC(x,cmin,cmax)-c)**2).lt.tol) exit


	  x0 = x
      enddo


      mapCemX = x


      return
      end function

